package solicitudes.rest;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import solicitudes.entity.Compra;
import solicitudes.entity.Solicitud;
import solicitudes.entity.SolicitudWS;
import solicitudes.entity.TipoSolicitud;
import solicitudes.exception.DaoException;
import solicitudes.exception.ServiceException;
import solicitudes.service.SolicitudService;

@Path("Solicitud")
@Component

public class ServicioSolicitud {
	 @Autowired
	 private SolicitudService solicitudService;
	 @Produces(MediaType.APPLICATION_JSON)
	 @GET
	 public List<SolicitudWS> obtener() throws RemoteException{
	  
	  List<SolicitudWS> solicitudes= new ArrayList<SolicitudWS>();
	  List<Solicitud> listaSolicitudes = null;
	  
	  try{
	   listaSolicitudes = solicitudService.obtener();
	   for(Solicitud solicitud: listaSolicitudes){
	    
	    SolicitudWS solicitudWS = new SolicitudWS();
	    solicitudWS.setCodSolicitud(solicitud.getCodSolicitud());
	    solicitudWS.setTipoSolicitud(solicitud.getTipoSolicitud());
	    solicitudWS.setDescripcion(solicitud.getDescripcion());
	    solicitudWS.setCompra(solicitud.getCompra());

	    solicitudes.add(solicitudWS);
	   }
	  }catch(DaoException e){
	   throw new RemoteException(e.getMessage());
	  }
	  return solicitudes;
	 }
	 
	 @Produces(MediaType.TEXT_PLAIN)
	 @POST
	 public String guardarSolicitud(@QueryParam("compra")Compra compra, @QueryParam("tipoSolicitud")TipoSolicitud tipoSolicitud, @QueryParam("descripcion")String descripcion 
	   ){
	  try{
	   solicitudService.guardarSolicitud(compra, tipoSolicitud, descripcion);
	  }catch(DaoException e){
	   return e.getMessage();
	  }catch(ServiceException e){
	   return e.getMessage();
	  }
	  return "";
	 }
}
